/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package autopecas.Dados;

import autopecas.ClasseBasica.Veiculo;
import autopecas.Exception.VeiculoException;
import autopecas.Interface.InterfaceVeiculo;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

/**
 *
 * @author NeGo
 */
public class DadosVeiculo extends DadosConexao implements InterfaceVeiculo {

    DadosConexao dados;
    
    public DadosVeiculo(){
        dados = new DadosConexao();
    }
    
    @Override
   /**
     * Metodo para Cadastrar dados do Veiculo inserindo no banco de dados .
     *
     * @param texto texto para cadastrar
     * @return true se a strong so conter cadastro de Modelo, Cor ,Veiculo,
     * false se conter outro dado
     * @throws java.sql.SQLException - Erros retomados pelo banco
     */
 
    public void cadastrar(Veiculo v) throws SQLException, VeiculoException {
        String sql = "INSERT INTO VEICULO (VEICULO,MODELO,COR,cpfCliente) VALUES (?,?,?,?)";
        PreparedStatement stmt = dados.conectarMysql().prepareStatement(sql);
        stmt.setString(1, v.getVeiculo());
        stmt.setInt(2, v.getModelo());
        stmt.setString(3, v.getCor());
        stmt.setLong(4, v.getCpfCliente());
        stmt.execute();

    }

    @Override
        /**
     * Metodo para atualizacao dados do Veiculo buscando pelo codigo do veiculo
     * e alterando no banco de dados .
     *
     * @param texto texto para atualizar
     * @return true se a strong so conter atualizar peo Codigo do veiculo, false
     * se nao conter cpf nao será realizado
     * @throws java.sql.SQLException - Erros retomados pelo banco
     */
    
    public void atualizar(Veiculo v) throws SQLException, VeiculoException {

        String sql = "UPDATE  VEICULO  SET VEICULO = ?, MODELO =? , COR = ? where id = ?";
        PreparedStatement stmt = dados.conectarMysql().prepareStatement(sql);
        stmt.setString(1, v.getVeiculo());
        stmt.setInt(2, v.getModelo());
        stmt.setString(3, v.getCor());
        stmt.setInt(4, v.getCodigoVeiculo());
        stmt.execute();

    }

    @Override
    
       /**
     * Metodo para Remover dados do Veiculo retirando do banco de dados onde
     * também é necessario a exclusao do veiculo .
     *
     * @param texto texto para Remover
     * @return true se a strong se remover o Veiculo, false se nao ocorrer a
     * remocao dado
     * @throws java.sql.SQLException - Erros retomados pelo banco
     */
 
    public void remover(Veiculo v) throws SQLException, VeiculoException {

        String sql = "DELETE FROM VEICULO WHERE id = ?";
        PreparedStatement stmt = dados.conectarMysql().prepareStatement(sql);
        stmt.setInt(1, v.getCodigoVeiculo());
        stmt.execute();

    }

    @Override
 
       /**
     * Metodo para Listar dados do Veiculo buscando no banco de dados .
     *
     * @param texto texto para Listar as informacoes do Veiculo.
     * @return true se a strong so conter a lista dos dados, false se nao conter
     * outro dado
     * @throws java.sql.SQLException erros retornados pelo banco
     */
 
    public ArrayList<Veiculo> ListarVeiculo() throws SQLException,VeiculoException {

        ArrayList<Veiculo> list = new ArrayList<>();
        String sql = "SELECT * FROM VEICULO";
        PreparedStatement stmt = dados.conectarMysql().prepareStatement(sql);
        ResultSet resultado = stmt.executeQuery();

        while (resultado.next()) {
            Veiculo veiculo = new Veiculo(resultado.getInt("id"), resultado.getInt("Modelo"), resultado.getString("veiculo"), resultado.getString("cor"),resultado.getLong("cpfCliente"));
            list.add(veiculo);
        }
        return list;

    }

    @Override
    
       /**
     * Metodo para Consultar dados do Veiculo da qual realiza a busca pelo
     * Codigo do veiculo no banco de dados .
     *
     * @param texto texto para Consultar
     * @return true se a strong se encontrar o codigo do veiculo , false se nao
     * conter outro dado
     * @throws java.sql.SQLException - Erros retomados pelo banco
     */
 
    public ArrayList<Veiculo> Consultar(Integer codigoVeiculo) throws SQLException, VeiculoException {

        ArrayList<Veiculo> list = new ArrayList<>();
        String sql = "SELECT * FROM VEICULO WHERE CODIGOVEICULO = ?";

        PreparedStatement stmt = dados.conectarMysql().prepareStatement(sql);
        stmt.setInt(1, codigoVeiculo);
        ResultSet resultado = stmt.executeQuery();

        while (resultado.next()) {
            Veiculo veiculo = new Veiculo(resultado.getInt("id"), resultado.getInt("Modelo"), resultado.getString("veiculo"), resultado.getString("cor"),resultado.getLong("cpfCliente"));
            list.add(veiculo);
        }
        return list;
    }
    
      public ArrayList<Veiculo> Consultar(long cpf) throws SQLException, VeiculoException {

        ArrayList<Veiculo> list = new ArrayList<>();
        String sql = "SELECT * FROM VEICULO WHERE cpfCliente = ?";

        PreparedStatement stmt = dados.conectarMysql().prepareStatement(sql);
        stmt.setLong(1, cpf);
        ResultSet resultado = stmt.executeQuery();

        while (resultado.next()) {
            Veiculo veiculo = new Veiculo(resultado.getInt("id"), resultado.getInt("Modelo"), resultado.getString("veiculo"), resultado.getString("cor"),resultado.getLong("cpfCliente"));
            list.add(veiculo);
        }
        return list;
    }



}
